package com.baidu.ota.impl;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.PowerManager;

import java.io.File;

public abstract class RecoverySystem {
    /**
     * 下一次开机升级
     *
     * @param context 上下文
     * @param file    ota文件
     * @return 异常信息
     */
    public abstract String installSystemOnNextBoot(Context context, File file);

    /**
     * 校验ota文件
     *
     * @param file ota文件
     * @param l    监听
     * @return 异常信息
     */
    public String verifyPackage(File file, android.os.RecoverySystem.ProgressListener l) {
        try {
            android.os.RecoverySystem.verifyPackage(file, l, null);
        } catch (Exception e) {
            return e.toString();
        }
        return "";
    }

    /**
     * 立即重启进行升级
     *
     * @param context 上下文
     * @param file    ota文件
     * @throws Exception 异常信息
     */
    @SuppressLint("MissingPermission")
    public void installSystemNow(Context context, File file) throws Exception {
        android.os.RecoverySystem.installPackage(context, file);
    }

    /**
     * 重启进入recovery升级
     *
     * @param context 上下文
     */
    public void reboot2Recovery(Context context) {
        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        if (pm != null) {
            pm.reboot("recovery");
        }
    }
}
